07 Classes abstratas

Próxima Atividade
  • Sugerir melhoria
Carregando vídeo

Transcrição

Do jeito que o nosso código está, o programador não é avisado em tempo de compilação caso esqueça de sobrescrever o método template. Só saberemos do erro em tempo de runtime. Não queremos essa solução, pois será muito tarde para detectar o problema.

Para resolvermos esse problema, podemos tornar View uma classe abstrata*. Classes abstratas não podem ser instanciadas, apenas herdadas. Essas classes também podem definir um ou mais métodos abstratos que nada mais são do que métodos sem implementação que precisam ser implementados pelas classes filhas.

Alterando nossa classe View:

abstract class View<T> {

    private _elemento: Element;

    constructor(seletor: string) {

        this._elemento = document.querySelector(seletor);
    }

    update(model: T) {

        this._elemento.innerHTML = this.template(model);
    }

    abstract template(model: T): string;

}

Veja que tanto a classe quando o método template são abstratos. Se não implementarmos o método template nas classes filhas, o TypeScript indicará um erro, lembrando o programador de sua tarefa.

Tirar dúvida Próxima Atividade
ícone TypeScript parte 1: Evoluindo seu Javascript

TypeScript parte 1: Evoluindo seu Javascript

100%
Aula04 de 05

Herança, reaproveitamento de código

Atividades 7 de 10

  • 01 Repetindo código...oh my! 05min
  • 02 Herança 06min
  • 03 Utilizando herança
  • 04 Lidando com tipos genéricos 09min
  • 05 Dois tipos genéricos
  • 06 Para saber mais: preciso manter a propriedade protected?
  • 07 Classes abstratas 04min
  • 08 Boleto bancário
  • 09 Revisão 03min
  • 10 Consolidando seu conhecimento

Aulas

Outros Links

Fórum Trocar Curso
Gravatar de Marcos Katsumi Kay

Marcos Katsumi Kay 34.0k xp

Logo da Alura